package com.xhwy.service;

import com.xhwy.entity.User;
import com.xhwy.param.UserLoginParam;
import com.xhwy.param.UserParam;
import com.xhwy.param.UserCheckParam;
import com.xhwy.param.UserUpdateParam;
import com.xhwy.util.PageUtil;
import com.xhwy.util.R;
import org.apache.ibatis.annotations.Param;

public interface UserService {

    /**
     * 登录业务
     * @param userLoginParam 账号和密码，但是密码是明文
     * @return
     */
    R login(UserLoginParam userLoginParam);
    /**
     *  多条件分页查询用户
     * @param user
     * @param pageUtil
     * @return
     */
    PageUtil<User> queryAllUsersByLimit(User user, @Param("pageUtil") PageUtil<User> pageUtil);

    /**
     * 锁定/解锁用户
     * @param userId 用户编号
     * @param isLock 是否锁定
     * @return
     */
    R updateUserState(Integer userId, boolean isLock);

    /**
     * 添加用户
     * @param user
     * @return
     */
    R addUser(User user);

    /**
     * 修改用户
     * @param userUpdateParam 校验过的用户信息
     * @return
     */
    R updateUser(UserUpdateParam userUpdateParam);

    /**
     * 删除用户
     * @param userId
     * @return
     */
    R deleteUserByUserId(Integer userId);

    /**
     * 检查账号是否可用业务
     * @param userCheckParam 账号参数 已经校验完毕
     * @return 检查结果
     */
    R check(UserCheckParam userCheckParam);

    /**
     * 注册业务
     * @param userParam 参数已经校验，密码明文
     * @return 注册结果
     */
    R register(UserParam userParam);
}
